#include <stdio.h>
#include <stdlib.h>

void quick_sort(int arr[],int l,int r)
{
    if(l < r)
    {
        int i , j , x;

        x = arr[l];
        i = l;
        j = r;

        while(i < j)
        {
            while(arr[j] >= x && i < j)
            {j--;}
            if(i < j)
            { arr[i++] = arr[j];}
            //因为原来i的位置已经填上了比x小的数了所以不用在判断那个点了。

            while(arr[i] < x && i < j)
            {i++;}
            if(i < j)
            { arr[j--] = arr[i];}
        }

        arr[i] = x;//循环结束时i=j，所以填写基数x
       
        for(int k = 0; k <10; k++)
        {
            printf("%d ",arr[k]);
        }
        printf("\n");
        
        //开始递归
        quick_sort(arr,l , i-1);
        quick_sort(arr,i+1 , r);
    }
    //也可是arr[j] = x;

}

int main()
{
    int arr[10] = {3,1,2,6,5,4,10,8,9,7};
    quick_sort(arr,0,9);
    return 0;
}


